using System;

namespace Framework.Core.Queue
{
    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public delegate void NewQueuerInQueueHandler<TKey, TValue, TStatus>(object sender, IStatusQueuer<TKey, TValue, TStatus> e);

    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public delegate void QueuerOutQueueHandler<TKey, TValue, TStatus>(object sender, IStatusQueuer<TKey, TValue, TStatus> e);

    /// <summary>
    /// 
    /// </summary>
    /// <typeparam name="TKey"></typeparam>
    /// <typeparam name="TValue"></typeparam>
    /// <typeparam name="TStatus"></typeparam>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public delegate void QueuerStatusChangedHandler<TKey, TValue, TStatus> (object sender, TStatus e);
    
    /// <summary>
    /// 
    /// </summary>
    /// <typeparam name="TKey"></typeparam>
    /// <typeparam name="TValue"></typeparam>
    /// <typeparam name="TStatus"></typeparam>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public delegate void QueuerQueriedHandler<TKey, TValue, TStatus>(object sender, DateTime e);

}
